In a concurrent execution environment, on a massively parallel processing system, database queries are processed. In such an environment, multiple database nodes host multiple tables of multiple databases, and so on. A projection is the physical storage for all of the data of a database table. The projection includes multiple segments distributed over multiple nodes. A segment is a partition of data, typically specified by column values in the tables.
Typically a node stores data segments of both a primary projection, and a buddy projection for fault tolerance. In this way, if a node fails, a replica of the data segment on the down node is available from another node in the cluster, a buddy node that is a backup. As such, when all nodes are up, query execution can use all available resources. Additionally, when one or more nodes are down, one or more nodes might do double-duty servicing its own requests, and the requests for the failed node. Eventually, the buddy node may become a victim node if it runs out of memory, or other resources, because the node is performing double duty. In one example environment, expected throughput falls by approximately a factor of N, where N is the total number of queries running concurrently.